# @Filename:    other
# @Author:      王佳伟
# @Time:        2025-02-06 15:01
# @Describe:    ASCII码和转进制函数

# 这个虽然简单确时不时能用上
ord() # 接收字符转换ASCII码
chr() # 接收ASCII码转换字符

# 一些应用
[chr(i) for i in range(ord("a"),ord("b")+1)] # -> 就算记不到ASCII也可快速生成字母表 # ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']


# 生成随机字符串：使用 chr() 函数结合random随机函数库，可以生成随机的字符串，用于测试或其他用途。

# 其它进制通用转10进制
# int("x", y)  # x是你要转的数，而y是这个数是由什么进制表示的，当y为0时就按x的前缀来看如 0bx 二进制,0b 0o 0x,分别是二，八，十六

# 10进制转其他进制
hex()  # 转16
oct()  # 转8

# 有一个函数很适合10进制转其他各种进制
# divmod(x, y)
# 其作用是同时返回两个数的商和余数。
# 所以要这样接收它的值
# a, b = divmod(x, y)


def to_hex(n):
    hex_digits = "0123456789abcdef"
    result = ""
    while n > 0:
        n, r = divmod(n, 16)  # 每运行一次就算出一位然后另一位代定，如现在一个数除完16后余数是11，然后商是25，其实16进制没换完前是这样的 （25）c,25是等待继续转的，如果我在运行一次就是(1)9c,然后再来（0）19c,为0了然后退出
        result = hex_digits[r] + result
    return result

